<?php
/**
 * Objeto responsável por manter funções genéricas necessárias pelo sistema e de uso geral
 *
 * @author Cristiano M. Gomes <cmgomes.es@gmail.com>
 */
class Utils {
	/**
	 * Método responsável pelo auto carregamento das classes em todo sistema
	 *
	 * @param string $classe
	 */
    public static function AutoLoad($classe){
    	$filename =   str_replace('_', DS, $classe);
    	include $filename . '.php';
    }

    /**
     * Método para conversão de datas do formato mysql 'Y-m-d h:i:s' para brasileiro 'd/m/Y h:i:s'
     *
     * @param string $data
     * @return string
     */
    public static function SqlBrTime($data) {
		
    	if($data){
    		$Temp = explode('-', $data);
    		$dia_horas = explode(' ', $Temp[2]);
            $Data = $dia_horas[0] . '/' . $Temp[1] . '/' . $Temp[0] . ' ' . $dia_horas[1];
            return $Data;
    	}
    	return '';
    }

    /**
     * Método para conversão de datas do formato mysql 'Y-m-d' para brasileiro 'd/m/Y'  sem exibição de horas
     *
     * @param string $data
     * @return string
     */
    public static function SqlBr($data) {
    	if($data){
    		$Temp = explode('-', $data);
            $Data = $Temp[2] . '/' . $Temp[1] . '/' . $Temp[0];
            return $Data;
    	}
    	return '';
    }

    /**
     * Método para conversão de datas do formato brasileiro 'd/m/Y' para formato Mysql 'Y-m-d' sem exibição de horas
     *
     * @param string $date
     * @return string
     */
    public static function BrSql($date) {
        $Temp = explode('/', $date);
        $Data = $Temp[2] . '-' . $Temp[1] . '-' . $Temp[0];
        return $Data;
    }
    
    /**
     * Método para conversão de datas do formato brasileiro 'd/m/Y h:i:s' para formato Mysql 'Y-m-d h:i:s'
     *
     * @param string $date
     * @return string
     */
    public static function BrSqlTime($date) {
        $Temp = explode('/', $date);
        $dia_horas = explode(' ', $Temp[2]);
        $Data = $Temp[2] . '-' . $Temp[1] . '-' . $Temp[0];
        return $Data;
    }
    
	/**
	 * Função para imprimir array em tela com formato legível
	 *
	 * @param array $array
	 */
    public static function PrintArray($array){
    	echo "<pre>";
    	print_r($array);
    	echo "</pre>";
    }

    /**
     * Função para verificação de twiiter
     * Ainda sendo implementada
     *
     * @param string $twitter
     * @return boolean
     */
    public static function VerificaTwitter($twitter){
	    $tmp_array = explode('@', $twitter);
	    $twitter = (sizeof($tmp_array) > 1) ? $tmp_array[1] : $tmp_array[0];

	    $link = "http://www.twitter.com/{$twitter}";
	    $pagina = @file_get_contents($link);

	    $text_procurar = "<strong>{$twitter}</strong>";
	    $erro = strpos($pagina, $twitter);

	    if($erro){
	       return true;
        }
        return false;
    }

    /**
     * Retorna timestamp da hora atual
     *
     * @return string
     */
    public static function TimestampAtual(){
		return date('YmdHis');
	}

	/**
	 * Recebe o tamanho do arquivo em bytes e efetua o calculo buscando
	 * a melhor apresentação visual possivel para o número.
	 * 
	 * @param integer $filesize
	 * 
	 * @return string
	 */
	public function TamanhoArquivo($filesize){

	    if(is_numeric($filesize)){
		    $decr = 1024; $step = 0;
		    $prefix = array('Byte','KB','MB','GB','TB','PB');
	
		    while(($filesize / $decr) > 0.9){
		        $filesize = $filesize / $decr;
		        $step++;
		    }
		    return round($filesize,2).' '.$prefix[$step];
	    }else{
	    	return 'valor repassado não é número';
	    }
	}

	/**
	 * Copia os arquivos passados para pasta informada no param 2
	 *
	 * @param array $file
	 * @param string $pasta
	 * @return bool
	 */
	public static function Copiar(array $file, $pasta){
		try {
			if(copy($file['tmp_name'], FILE_ROOT . $pasta . DS . $file['name'])){
				return true;
			}else{
				return false;
			}
		}catch (Exception $e){
			die($e->getMessage());
		}
	}

	/**
	 * Corta string deixando-a com tamanho desejado
	 *
	 * @param string $texto
	 * @param integer $tamanho
	 * @param integer $inicio
	 * @return string
	 */
	public static function CortaString($texto, $tamanho, $inicio){
		$piece = substr($texto, $inicio, $tamanho);
		return $piece;
	}

	public static function RespondeXML($codigo, $texto, $data){
		header('Content-type: text/xml');
		$msn = "<message>
					<code>{$codigo}</code>
					<text>{$texto}</text>
					<data>{$data}</data>
				</message";
		
		echo $msn;
		die();
	}

	public static function Iso2Utf($cont){
		$cont = str_replace('á', 'á', $cont);
		$cont = str_replace('é', 'é', $cont);
		$cont = str_replace('í', 'í', $cont);
		$cont = str_replace('ó', 'ó', $cont);
		$cont = str_replace('ú', 'ú', $cont);
		
		$cont = str_replace('ã', 'ã', $cont);
		$cont = str_replace('õ', 'õ', $cont);
		
		$cont = str_replace('à', 'à', $cont);
		$cont = str_replace('è', 'è', $cont);
		$cont = str_replace('ì', 'ì', $cont);
		$cont = str_replace('ò', 'ò', $cont);
		$cont = str_replace('ù', 'ù', $cont);
		
		$cont = str_replace('ç', 'ç', $cont);
		$cont = str_replace('|', '|', $cont);
		
		return $cont;
	}
}